"""
1、这两个参数是什么意思：*args，**kwargs？我们为什么要使用它们？
"""


# *args ：加了星号（*）的变量args会存放所有未命名的变量参数，args为元组
# **kwargs： 加**的变量kwargs会存放命名参数，即形如key=value的参数， kwargs为字典.
# 我们为什么要使用它们？： 有时可能需要一个函数能处理比当初声明时更多的参数, 这些参数叫做不定长参数，
# 声明时不会命名。


"""
2.运行结果
def f(x, l=[]):
for i in range(x):
    l.append(i * i)
print(l) 

f(2)
f(3)
f(3, [3, 2, 1])
"""

# f(2) : 输出结果为[0, 1]
# f(3) : 此时列表l的值为[0, 1] 再次将3带入运行输出结果为[0, 1, 0, 1, 4]
# f(3, [3, 2, 1]):f将l之间的值从新赋值[3, 2, 1] 所以输出结果为[3, 2, 1, 0, 1, 4]

"""
3.如何在一个函数内部修改全局变量
"""
# ——global关键字声明全局变量


"""
4、用lambda函数实现两个数相乘
"""
f = lambda x, y: x * y
print(f(5, 8))

"""
5、列表推导式求列表所有奇数并构造新列表，a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
"""
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_a = [x for x in a if x % 2 != 0]
print(list_a)
